package com.medical.literature.document.service;

import com.medical.literature.common.vo.PageResult;
import com.medical.literature.document.dto.LiteratureQueryRequest;
import com.medical.literature.document.dto.LiteratureResponse;
import com.medical.literature.document.dto.LiteratureUploadFormData;
import com.medical.literature.document.entity.Literature;
import org.springframework.web.multipart.MultipartFile;

/**
 * 文献服务接口
 */
public interface LiteratureService {
    
    /**
     * 上传文献 - 使用FormData处理日期
     */
    Long uploadLiteratureFormData(LiteratureUploadFormData request, Long userId, Integer userType);
    
    /**
     * 分页查询文献列表
     */
    PageResult<LiteratureResponse> getLiteratureList(LiteratureQueryRequest query, Long userId);
    
    /**
     * 根据ID获取文献详情
     */
    LiteratureResponse getLiteratureById(Long id, Long userId);
    
    /**
     * 更新文献信息
     */
    void updateLiterature(Long id, Literature literature, Long userId);
    
    /**
     * 删除文献
     */
    void deleteLiterature(Long id, Long userId);
    
    /**
     * 下载文献文件
     */
    void downloadLiterature(Long id, Long userId, javax.servlet.http.HttpServletResponse response);
    
    /**
     * 收藏/取消收藏文献
     */
    void toggleFavorite(Long literatureId, Long userId);
    
    /**
     * 获取用户收藏的文献列表
     */
    PageResult<LiteratureResponse> getFavoriteList(LiteratureQueryRequest query, Long userId);
    
    /**
     * 手动触发文献识别（管理员功能）
     */
    void triggerLiteratureRecognition(Long literatureId, Long userId, Integer userType);
}